' ****** START INCLUDE Rgba Core ******
DIM r0%, g0%, b0%, a0%, r1%, g1%, b1%, a1%
SUB SetRgb0(x%,y%)
DIM c$
c$ = RIGHT$("000000" + HEX$(POINT(x%,y%)), 6)
r0% = VAL("0x" + LEFT$(c$,2))
g0% = VAL("0x" + MID$(c$,3,2))
b0% = VAL("0x" + RIGHT$(c$,2))
END SUB
SUB SetRgb1(c&,a%b)
DIM c$
c$ = RIGHT$("000000" + HEX$(c&), 6)
r1% = VAL("0x" + LEFT$(c$,2))
g1% = VAL("0x" + MID$(c$,3,2))
b1% = VAL("0x" + RIGHT$(c$,2))
a0% = 255 - a%b
a1% = a%b
END SUB
SUB RgbaCorePset(x%,y%)
PSET(x%,y%), _RGB( [{ (r0%*a0%)+(r1%*a1%) }/255], [{ (g0%*a0%)+(g1%*a1%) }/255], [{ (b0%*a0%)+(b1%*a1%) }/255] )
END SUB
' ****** END INCLUDE Rgba Core ******
aspect_ratio = 1
Sub RgbaCircle (xc%, yc%, r%, c&, a%b)
PCOPY 0,-1
DIM xy&, a&, a_ar&, xy_ar&, y%, x%, x1%, x2%, bFound%
FOR xy& = 0 TO r%*0.75
a& = SQR( r% * r% - xy& * xy& )
a_ar& = a&/aspect_ratio
xy_ar& = xy&/aspect_ratio
PSET (xc% + xy&, yc% - a_ar&), &h000001
PSET (xc% - xy&, yc% - a_ar&), &h000001
PSET (xc% + xy&, yc% + a_ar&), &h000001
PSET (xc% - xy&, yc% + a_ar&), &h000001
PSET (xc% - a&, yc% + xy_ar&), &h000001
PSET (xc% - a&, yc% - xy_ar&), &h000001
PSET (xc% + a&, yc% + xy_ar&), &h000001
PSET (xc% + a&, yc% - xy_ar&), &h000001
NEXT xy&
SetRgb1(c&, a%b)
For y% = yc% - r% - 3 TO yc% + r% + 3
x1% = xc% - r% - 2
bFound% = FALSE
WHILE bFound% = FALSE AND x1% < xc% + r% + 3
WHILE POINT(x1% + 1, y%) = &h000001 : bFound% = TRUE : x1% = x1% + 1 : WEND
IF bFound% = FALSE THEN x1% = x1% + 1
WEND
If bFound% THEN
x2% = x1%
bFound% = FALSE
WHILE bFound% = FALSE AND x2% < xc% + r% + 3
IF POINT(x2% + 1, y%) = &h000001 THEN bFound% = TRUE ELSE x2% = x2% + 1
WEND
If (bFound% = TRUE) AND ( x2% > (x1%) ) THEN
FOR x% = x1% + 1 TO x2% : SetRgb0(x%,y%) : RgbaCorePset(x%,y%) : NEXT x%
END IF
END IF
Next x%
FOR xy& = 0 TO r%*0.75
a& = SQR( r% * r% - xy& * xy& )
a_ar& = a&/aspect_ratio
xy_ar& = xy&/aspect_ratio
x% = xc% + xy& : y% = yc% - a_ar& : PCOPY(x%, y%) - (x%, y%), -1, 0 : SetRgb0(x%, y%) : RgbaCorePset(x%, y%)
y% = yc% + a_ar& : PCOPY(x%, y%) - (x%, y%), -1, 0 : SetRgb0(x%, y%) : RgbaCorePset(x%, y%)
x% = xc% - a& : y% = yc% + xy_ar& : PCOPY(x%, y%) - (x%, y%), -1, 0 : SetRgb0(x%, y%) : RgbaCorePset(x%, y%)
x% = xc% + a& : PCOPY(x%, y%) - (x%, y%), -1, 0 : SetRgb0(x%, y%) : RgbaCorePset(x%, y%)
IF xy& > 0 THEN
x% = xc% - xy& : y% = yc% - a_ar& : PCOPY(x%, y%) - (x%, y%), -1, 0 : SetRgb0(x%, y%) : RgbaCorePset(x%, y%)
y% = yc% + a_ar& : PCOPY(x%, y%) - (x%, y%), -1, 0 : SetRgb0(x%, y%) : RgbaCorePset(x%, y%)
x% = xc% - a& : y% = yc% - xy_ar& : PCOPY(x%, y%) - (x%, y%), -1, 0 : SetRgb0(x%, y%) : RgbaCorePset(x%, y%)
x% = xc% + a& : PCOPY(x%, y%) - (x%, y%), -1, 0 : SetRgb0(x%, y%) : RgbaCorePset(x%, y%)
END IF
NEXT xy&
END SUB
screen _newimage(300, 151, 27)
color , &h505050
cls
for y = 0 to 150 step 4
line (0, y) - (299, y ), &hFFFFFF
next y
RgbaCircle (80, 70, 63, &hFF0000, 150)
RgbaCircle (210, 70, 63, &h00FF00, 150)
END